The present invention relates generally to communications technology, and more specifically to logical multicasting in a switching system.
Communications networks transfer digital data from source nodes to destination nodes on the network by routing data units such as data packets or frames through switching systems. A conventional switching system includes a plurality of input ports and a plurality of output ports, and is configured such that each output port may receive data units from any input port. The system determines the appropriate output port for a particular data unit by accessing information contained in a header field of the data unit.
The conventional switching system further includes a plurality of queues for buffering flows of data units being routed through the system. For example, the plurality of queues may be configured in a shared memory coupled between the input ports and the output ports, and control circuitry may direct a data flow stored in a respective queue to the appropriate output port. As mentioned above, each output port of the system may receive data units from any input port. The plurality of queues may therefore be employed to prevent data loss, e.g., when data units are simultaneously routed from more than one input port to a single output port. Moreover, amounts of data passing through the input and output ports at particular times may vary. The plurality of queues may therefore be configured to accommodate various amounts of bandwidth. For example, a conventional communications system architecture may provide a number of predetermined Quality of Service (QoS) levels such as a constant bit-rate service class and an unspecified bit-rate service class. The constant bit-rate service class typically supports real-time applications that require fixed amounts of bandwidth, and the unspecified bit-rate service class (also known as a “best effort” service) typically supports non-real-time applications that do not require fixed bandwidths. A first portion of the plurality of queues may therefore be configured as class queues to buffer data flows for constant bit-rate service, and a second portion of the queues may be configured as best effort queues to buffer data flows for best effort service. The conventional switching system may also include at least one meter such as a token bucket for metering data units provided to at least one of the class queues to ensure that the data units conform to the requirements of a particular constant bit-rate service. The switching system typically determines the appropriate service class for a particular data unit by accessing the header information of the data unit.
Not only may single data units be routed from at least one input port to at least one output port in the conventional switching system, but data units may also be replicated before being transmitted from the system. Data units that enter a switching system through a single input port and exit the system through a single output port without being replicated are generally known as unicast data, and data units that enter a switching system through a single input port and are replicated a number of times before exiting the system through at least one output port are generally known as multicast data. Specifically, single copies of a data unit that exit the system through more than one output port are known as spatial multicast data, and multiple copies of a data unit that exit the system through a single output port are known as logical multicast data.
One drawback of the conventional switching system is that routing logical multicast data through the system may adversely affect the flow of other data through the system. For example, logical multicast data requiring constant bit-rate service is typically metered by a token bucket, temporarily stored in a class queue of a shared memory, and then directed to a single output port of the system. However, because the routing of logical multicast data through the system typically involves the transfer of multiple copies of data units, an increased load at, e.g., the meter, the shared memory, and/or the connection between the shared memory and the output port resulting from the transfer of these multiple data unit copies may significantly degrade the flow of other data units through the system.
It would therefore be desirable to have a switching system that is capable of multicast operation. Such a switching system would be configured to handle logical multicast data without degrading the flow of other data through the system.